//
//  QDBusLineTableViewController.swift
//  QDMetroClient
//
//  Created by YueWen on 2019/4/12.
//  Copyright © 2019 YueWen. All rights reserved.
//

import UIKit
import HandyJSON

/// 公交线路
private struct QDBusLine: HandyJSON {
    /// 公交线路的id
    var id = ""
    /// 公交姓名的名称
    var line = ""
    /// 线路起点
    var lineStart = ""
    /// 线路终点
    var lineEnd = ""
    /// 线路状态，0为不可用，1为可用
    var lineStatus = "1"
}


/// 公交线路列表控制器
final class QDBusLineTableViewController: NWTableViewController {

    //所有的线路
    private var allLines = [QDBusLine]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        // Do any additional setup after loading the view.
        navigationItem.title = "开通线路"
        hidesBottomBarWhenPushed = true
        
        tableView.rowHeight = 67
        titleForFooterRefreshWithNoMoreData = "--- 数据加载完成 ---"
        
        // 请求公交线路
        requestBusLines()
    }
    

    override func registerTableViewCellsAndReusableView() {
        tableView.register(QDBusLineTableViewCell.self, forCellReuseIdentifier: "cell")
    }
    
    /// 下拉刷新
    override func headerRefreshBeginHandler() {
        currentPage = 0
        requestBusLines()
    }
    
    /// 上拉加载
    override func footerRefreshBeginHandler() {
        requestBusLines()
    }
}



extension QDBusLineTableViewController {
    
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return allLines.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        
        if let lineCell = cell as? QDBusLineTableViewCell {
            
            let line = allLines[indexPath.row]
            lineCell.titleLabel.text = line.line
            lineCell.lineLabel.text = "\(line.lineStart) - \(line.lineEnd)"
        }
        
        return cell
    }
    
}


extension QDBusLineTableViewController {
    
    func requestBusLines(){
        
        QDNetworkingManager.request(url: busLinesUrl,  isArray: true, paramteres: ["page":currentPage,"size":"10"],arraySuccess: { (msg, datas) in
            
            let lines = [QDBusLine].deserialize(from: datas) as? [QDBusLine] ?? [QDBusLine]()
            
            if self.currentPage == 0{
                self.allLines.removeAll()
                self.currentPage += 1
            }
            
            // 所有的线路
            self.allLines.append(contentsOf: lines)
            // 结束刷新
            self.endHeaderRefreshing()
            self.endFooterRefreshing()
            // 列表刷新
            self.tableView.reloadData()
            
            if lines.count < 10 {
                self.refreshFooter.endRefreshingWithNoMoreData()
            }
            
        }) { (msg, errorType) in
            
            // 结束刷新
            self.endHeaderRefreshing()
            self.endFooterRefreshing()
            
            //
            self.view.showTextHUD(text: msg)
        }
    }
    
}
